package com.yidu.action;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.action.vo.ListenMemberVo;
import com.yidu.common.JsonMsg;
import com.yidu.common.Pages;
import com.yidu.common.Tools;
import com.yidu.domain.ListenBackstageUser;
import com.yidu.domain.ListenMember;
import com.yidu.service.ListenMemberService;

import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;

/**
 * 
 * 类说明:会员的action类
 * @author 聂菲
 * @date 2018年11月28日
 */
@Controller
@RequestMapping("/listenMember")
public class ListenMemberController {
	
	/**
	 *使用注入会员service
	 */
	@Resource
	ListenMemberService service;
	
	/**
	 * 查询所有会员
	 * @return
	 */
	@RequestMapping("findAll")
	@ResponseBody
	public Map<String, Object> findAll(@RequestParam(value ="key[memberName]",required = false)String names,@RequestParam(value ="key[memberPhone]",required = false)String phone,ListenMemberVo lv){
		//给对象ListenMemberVo里的会员名称赋值
		lv.setMemberName(names);
		//给对象里的会员电话赋值
		lv.setMemberPhone(phone);
		//创建一个map
		Map<String, Object> map = new HashMap<>();
		//判断   如果会员名称不为空
		if(!Tools.isEmpty(lv.getMemberName())){
			//那就把前台接收到的会员名称赋值到ListenMemberVo中
			map.put("memberName", lv.getMemberName());
		}
		//判断   如果会员电话不为空
		if(!Tools.isEmpty(lv.getMemberPhone())){
			//那就把前台接收到的会员电话赋值到ListenMemberVo中
			map.put("memberPhone", lv.getMemberPhone());
		}
		//分页   如果page不为空 limit不为空
		if(lv.getPage()!=null && lv.getLimit()!=null) {
			//创建一个page对象
			Pages page=new Pages();
			//把ListenMemberVo里接收到的page赋值给CurPage
			page.setCurPage(lv.getPage());
			//把ListenMemberVo里接收到的limit赋值给MaxResult
			page.setMaxResult(lv.getLimit());
			//再把赋值好的字段放入map中  分别是FirstRows和MaxResult
			map.put("firstRows", page.getFirstRows());
			map.put("maxResult", page.getMaxResult());
		}
		//用list来接受service查询所有的结果
		List<ListenMemberVo> list = service.findAll(map);
		//用int变量来接收service查询到的行数
		int rows=service.findCount(map);
		//创建一个map集合
		Map<String, Object> layuiMap=new HashMap<>();
		//把code、msg、count、data分别放入map中
		layuiMap.put("code", 0);
		layuiMap.put("msg", "");
		layuiMap.put("count",rows);
		//将list放入map中
		layuiMap.put("data", list);
		//把map集合返回到前台去
		return layuiMap;
	}
	
	
	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	@RequestMapping("findById")
	@ResponseBody
	public ListenMemberVo findById(String id){
		//用ListenMemberVo对象来接受根据id查询到的数据
		ListenMemberVo vo = service.findById(id);
		//把数据返回到前台
		return vo;
	}
	
	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	@RequestMapping("findByPhone")
	@ResponseBody
	public ListenMember findByPhone(String phone){
		//用ListenMemberVo对象来接受根据电话号码查询到的数据
		ListenMember vo = service.findByPhone(phone);
		//把数据返回到前台
		return vo;
	}
	
	
	
	/**
	 * 增加或者修改会员
	 * @param vo
	 * @throws ParseException 
	 */
	@RequestMapping("addOrUpdate")
	@ResponseBody
	public void addOrUpdate(ListenMemberVo vo,HttpSession session) throws ParseException{
		//取到session
		ListenBackstageUser user = (ListenBackstageUser) session.getAttribute("user");
		//取到session中的buName赋值给ListenMemberVo对象中的oper
		vo.setOper(user.getBuName());
		//如果会员id不为空
		if(!Tools.isEmpty(vo.getMemberId())){
			//取到session中的buName赋值给ListenMemberVo对象中的oper
			vo.setOper(user.getBuName());
		}else{
			//生成四个字的随机数
			vo.setMemberId(Tools.getRandomString(4));
			//增加会员   调用service里的增加会员方法  把vo放进去
			int add = service.addMember(vo);
		}
	}
	
	
	/**
	 * 根据id删除(把用户修改为无效)
	 * @param id
	 * @return
	 */
	@RequestMapping("/deleteById")
	@ResponseBody
	public JsonMsg deleteById(String id) {
		//如果前台传过来的id不为空的话
		int ids=0;
		if (id!=null && !"".equals(id)) {
			//就把值放进删除的方法里
			ids = service.deleteId(id);
		}
		//创建一个工具类JsonMsg对象
		JsonMsg msg=new JsonMsg();
		//ids为0 就表示删除成功  否则删除失败
		if(ids!=0) {
			msg.setDatas(1);
			msg.setMsg("删除成功");
		}else {
			msg.setDatas(0);
			msg.setMsg("删除失败");
		}
		//把结果msg返回到前台
		return msg;
	}
}

